<?php

class CDBConnection
{
    static private $instance = NULL;
    private $dbh;
    private $dbprefix;

    static function getInstance()
    {
        if (self::$instance == NULL) {
            self::$instance = new CDBConnection();
        }
        return self::$instance;
    }

    /*
    * Создание соединения с БД
    * @param $param mixed строка - название соединения из конфигов, массив с параметрами соединения
    */
    public function __construct($param = 'default')
    {
        include ("config.php");
        if (is_array($param)) {
            $db_params = $param;
        } else {
            $db_params = $config['db'][$param];
        }
        $this->dbprefix = $db_params['dbprefix'];
        $con_str        = $db_params['connection_string'];
        $base_user      = $db_params['user_name'];
        $base_pass      = $db_params['password'];
        if ($con_str != "") {
            try {
                $this->dbh = new PDO($con_str, $base_user, $base_pass);
                $this->dbh->exec("SET CHARSET " . $db_params['encoding'] . ";");
            } catch (PDOException $e) {
                echo $e->getMessage();
            }
        }
    }

    /**
     * Возвращает префикс таблиц
     * @return string
     */
    public function get_prefix()
    {
        return $this->dbprefix;
    }

    public function __clone()
    {
    }

    public function handle()
    {
        return $this->dbh;
    }
}
